home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / openoffice / bin / openoffice-xlate-lang
Text File  |  2009-10-23  |  4KB  |  208 lines

  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4.  
  5. my $progname=$0; $progname = $& if $progname =~ m,[^/]+$,;
  6.  
  7. my %PREFIX;   # used to search for prefix numbers
  8. my %ISOCODE;  # used to search for iso codes
  9. my %LANGUAGE; # used to search for language names
  10.  
  11. #=======================================================================
  12. # initialisation code - stuff the DATA into the CODES hash
  13. #=======================================================================
  14. sub init {
  15.  
  16.     my $prefix;
  17.     my $code;
  18.     my $name;
  19.  
  20.  
  21.     while (<DATA>)
  22.     {
  23.         next unless /\S/;
  24.         chop;
  25.         ($prefix, $code, $name ) = split(/:/, $_, 3);
  26.         $PREFIX{$prefix} = $prefix;
  27.         $PREFIX{$code} = $prefix;
  28.         $PREFIX{$name} = $prefix;
  29.  
  30.         $ISOCODE{$prefix} = $code;
  31.         $ISOCODE{$code} = $code;
  32.         $ISOCODE{$name} = $code;
  33.     
  34.         $LANGUAGE{$prefix} = $name;
  35.         $LANGUAGE{$code} = $name;
  36.         $LANGUAGE{$name} = $name;
  37.     }
  38. }
  39.  
  40.  
  41. #=======================================================================
  42. # usage - error message
  43. #=======================================================================
  44. sub usage {
  45.     my $errmsg = shift;
  46.     my $errcode = shift;
  47.     print STDERR "$progname: $errmsg\n" if $errmsg;
  48.     print STDERR "$progname: Converts between prefix codes, iso codes and langnames\n";
  49.     print STDERR " Usage: $progname (-i|-l|-p|-h) <code>|all\n";
  50.     print STDERR "  -i <code>: convert prefix to iso code (ex: 03 -> pt)\n";
  51.     print STDERR "  -l <code>: convert iso code to language name (ex: pt -> portuguese)\n";
  52.     print STDERR "  -p <code>: convert iso code to prefix (ex: pt -> 03)\n";
  53.     print STDERR "  the code can either be an iso code, a prefix or even a language name\n";
  54.     print STDERR "  The special code \"all\" asks for all possible values.\n\n";
  55.     print STDERR "  -h : print this help\n";
  56.     exit $errcode;
  57. }
  58.  
  59. #=======================================================================
  60. # main - 
  61. #=======================================================================
  62. init();
  63.  
  64. my ($LanguageCode, $LanguageMap);
  65.  
  66. while ($ARGV[0] =~ /^-/) {
  67.     $_ = shift;
  68.     if (m/^-i/) {
  69.     $LanguageMap = \%ISOCODE;
  70.     }
  71.     elsif (m/^-l/) {
  72.     $LanguageMap = \%LANGUAGE;
  73.     }
  74.     elsif (m/^-p/) {
  75.     $LanguageMap = \%PREFIX;
  76.     }
  77.     elsif (m/^-h/) {
  78.     usage("",0);
  79.     }
  80.     else {
  81.     usage ("unknown option $_",1);
  82.     }
  83. }
  84.  
  85. usage ("no operation specified on command line",1)
  86.     if (!$LanguageMap);
  87.  
  88. usage ("no language code specified on command line",1)
  89.     if (!($LanguageCode = shift));
  90.  
  91. if ($LanguageCode =~ (m/^all$/)) {
  92.     # Asked for all codes
  93.     my $old="";
  94.     foreach my $key (sort values %$LanguageMap) {
  95.     if ($key ne $old) {
  96.         print "$key ";
  97.         $old=$key;
  98.     }
  99.     }
  100.     print "\n";
  101.     exit 0;
  102. }
  103.  
  104. usage ("no mapping found for $LanguageCode\n",1)
  105.     if (!(%$LanguageMap->{$LanguageCode}));
  106.  
  107. print $LanguageMap->{$LanguageCode}, "\n";
  108.  
  109. 1;
  110.  
  111. # keep third column names here with openoffice-dir/share/*/<long lang name>/
  112.  
  113. __DATA__
  114. :be-BY:belarussian
  115. :bg:bulgarian
  116. :bn:bengali
  117. :bs:bosnian
  118. :en-GB:english_british
  119. :gu-IN:gujarati
  120. :hr:croatian
  121. :km:khmer
  122. :ku:kurdish
  123. :pa-IN:punjabi
  124. :rw:kinarwanda
  125. :xh:xhosa
  126. :lt:lithuanian
  127. :ne:nepali
  128. :vi:vietnamese
  129. :ns:northern_sotho
  130. :ss:swazi
  131. :sr-CS:serbian
  132. :sr:serbian
  133. :ve:venda
  134. :ts:tsonga
  135. :st:southern_sotho
  136. :tn:tswana
  137. :br:breton
  138. :ga:gaelic
  139. :gd:scottish_gaelic
  140. :th:thai
  141. :hi-IN:hindi
  142. :bs-BA:bosnian
  143. :en-ZA:english_southafrican
  144. :mk:macedonian
  145. :lo:lao
  146. :as-IN:assamese
  147. :ml-IN:malayalam
  148. :mr-IN:marathi
  149. :or-IN:oriya
  150. :ur-IN:urdu
  151. :fa:farsi
  152. :lv:latvian
  153. :nr:ndebele
  154. :ne:nepalese
  155. :sh-YU:serbian
  156. :sh:serbian
  157. :te-IN:telugu
  158. :ti-ER:tigrinya
  159. :ta-IN:tamil
  160. :tg:tajik
  161. :ka:georgian
  162. :eo:esperanto
  163. :uk:ukrainian
  164. :kk:kazahk
  165. :dz:dzongkha
  166. :kn:kannada
  167. :sw:swahili
  168. :gl:galician
  169. :uz:uzbek
  170. :oc:occitan
  171. :ro:romanian
  172. :eu:basque
  173. :mn:mongolian
  174. 01:en-US:english_american
  175. 03:pt:portuguese
  176. 07:ru:russian
  177. 26:ns:northernsotho
  178. 27:af:afrikaans
  179. 28:zu:zulu
  180. 30:el:greek
  181. 31:nl:dutch
  182. 33:fr:french
  183. 34:es:spanish
  184. 35:fi:finnish
  185. 36:hu:hungarian
  186. 37:ca:catalan
  187. 39:it:italian
  188. 42:cs:czech
  189. 43:sk:slovak
  190. 45:da:danish
  191. 46:sv:swedish
  192. 47:nb:norwegian
  193. 48:pl:polish
  194. 49:de:german
  195. 50:sl:slovenian
  196. 53:cy:welsh
  197. 55:pt-BR:portuguese_brazilian
  198. 77:et:estonian
  199. 79:nn:norwegian_nynorsk
  200. 81:ja:japanese
  201. 82:ko:korean
  202. 86:zh-CN:chinese_simplified
  203. 88:zh-TW:chinese_traditional
  204. 90:tr:turkish
  205. 91:hi:hindi
  206. 96:ar:arabic
  207. 97:he:hebrew
  208.